package it.tukano.treditor.engine.jme3;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class ABMap<A, B> {
    
    private final Map<A, B> abMap = new HashMap<>();
    private final Map<B, A> baMap = new HashMap<>();
    
    public List<A> listA() {
        return new ArrayList<>(abMap.keySet());
    }
    
    public List<B> listB() {
        return new ArrayList<>(baMap.keySet());
    }

    public void put(A a, B b) {
        abMap.put(a, b);
        baMap.put(b, a);
    }
    
    public void removeA(A a) {
        B b = abMap.get(a);
        abMap.remove(a);
        baMap.remove(b);
    }
    
    public void removeB(B b) {
        A a = baMap.get(b);
        abMap.remove(a);
        baMap.remove(b);
    }
    
    public B getB(A a) {
        return abMap.get(a);
    }
    
    public A getA(B b) {
        return baMap.get(b);
    }

    public void clear() {
        abMap.clear();
        baMap.clear();
    }
}
